package com.zmm.util.document.register;

import com.zmm.util.document.ParamType;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author 900045
 * @description:
 * @name Param
 * @date By 2021-10-26 15:18:06
 */
@Target(value = { ElementType.PARAMETER, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface Param {

	/**
	 * 描述
	 *
	 * @return
	 */
	String description() default "";

	/**
	 * 版本号
	 *
	 * @return
	 */
	String version() default "";

	/**
	 * 参数类型
	 *
	 * @return
	 */
	ParamType type() default ParamType.BOTH;

	/**
	 * 是否忽略 
	 *
	 * @return
	 */
	boolean ignore() default false;

	/**
	 *  是否必须
	 *
	 * @return
	 */
	boolean required() default false;


	/**
	 *  是否是自定义类型
	 *
	 * @return
	 */
	boolean isClass() default false;

	/**
	 *  指定的自定义类型   一般用在 集合参数时  如 List<Object>    指定Object的类型
	 *
	 * @return
	 */
	Class<?> Class() default Object.class;
}
